In the art of computer processing systems the universe of computer software can be thought of as existing in three tiers: operating software systems, which manage the computer hardware resources; application programs, which are referred to herein as "consumer programs," which perform the "useful" work required from the computer processing system; and utility programs, which move relevant data to a predetermined storage area for access by the application programs in a usable fashion. In general, the operating software system for a particular computer processor is uniquely written to accommodate the particular hardware design characteristics of that computer system. Likewise, utility programs are written to accommodate particular computer hardware designs, and to facilitate connection of the computer to other external devices, usually devices for storing or displaying data, or for receiving or transmitting data. Application programs, on the other hand, are typically written in a more general format in order to be operable on different computer processing systems, and such programs tend to be task-oriented programs, formatted to do work or to produce results which are useful in the work outside the computer processor.
The applications programs residing in a particular computer processing system might be thought of as residing within a "utility cushion" unique to the processing system, i.e., a set of programs internal to the computer system that control its internal data accessing operations during the execution of an application program. For example, an application program may require access to a volume of data stored in a particular memory device, and a utility program is therefore called upon to make the transfer of the data from the memory device to a storage region which is accessible by the application program. As a further example, an application program may require an output device to be activated as a part of the application process, and a utility program is called upon to activate the output device and make the necessary data transfer for the required application.
When a number of computer processors are interconnected with a view toward providing an interchange of data between the computer processors, certain hardware and software additions must be made to all such interconnected computer processing systems. The hardware connectivity involves providing the necessary data transmission paths for transmitting and receiving the data signals; a related software delivery program must also be provided in order to systematize and facilitate the use of the hardware connectivity features. This idea of interconnecting computer processors has become known as "networking," wherein data which is prestored within one computer processing system may be transferred, at various transfer rates, to a designated storage location within a second computer processing system. However, the essence of "network" is to make discrete copies of data from one computer processing system to another in the network.
In the field of "networking," recent attention has been given to transferring such data at very high data transfer rates. Network Systems Corporation, of Minneapolis, Minnesota, has developed specialized hardware connectivity features, designated by the trademark "HYPERchannel," which are controlled by a software delivery system designated by the trademark "NETEX." This networking arrangement enables the high-speed transfer of large amounts of data between computer processing systems of similar or dissimilar manufacture. However, this and other approaches to "networking" are strictly restricted to the transfer of data or blocks of data between computer processing systems under discrete operator control. The applications programs that reside in the various computer processing systems in the "network" are and remain isolated in their respective processors, and it is only the data which may be copied from one machine to another, usually as a result of an operator entering discrete commands into the computer via an operator's keyboard.
There is a need for applications programs within one computer processor to be able to access data from within another computer processor, as the need for such data becomes apparent during the execution of an applications program. That is, there is a need for an applications program to call out dynamically from within itself for data transfers to or from another computer as a part of the execution of the application program. One approach to meeting this need is by expanding the "utility cushion" in each interconnected computer processor in order to make it available to all interconnected computer processors in the network, which would have the result of permitting an applications program to interact with data without having a specific awareness of the computer processor in which the data resides. This leads to the logical result that the "networking" is placed under the control of the application programs, and effectively expands the "utility cushion" into a "networking cushion," i.e., a network of utility programs which are accessible by any of the computer processors in the network.